//
//  main.swift
//  StructDemo
//
//  Created by zhangjianyun on 17/6/27.
//  Copyright © 2017年 com.taihejiacheng. All rights reserved.
//

import Foundation

print("结构提测试")


struct QFTest {
    var x = 0
    var y = 0
    // 定义结构体的构造函数
    init() {
        //定义一个空的构造函数 构造函数是已init开头的 自动调用
        // oc alloc init
        print("in init")
    }
    // 构造函数参数 那么以后带上参数必须写成
    // QFTest(x:100, y:200)
    init(x: Int, y: Int) {// 定义带有两个参数的构造函数
        self.x = x
        self.y = y
        print("in init(x: y :)")
    }
    
    init(_ x: Int, _ y: Int) {
        self.x = x
        self.y = y
    }
    
    // 结构体没有析够函数
    
    func getCenter() -> Int {
        return (x+y) / 2
    }
    
    // 结构体中不允许修改函数的变量
    // 如果要修改 必须用mutating 关键字修饰
    mutating func assOffSet(deltaX:Int, deltaY:Int) {
        x += deltaX
        y += deltaY
    }
};


func testStructure() {
    //结构体的定义是 结构体的名字
    let s = QFTest(x:100, y:200)
    print("s.x = \(s.x) s.y = \(s.y)")
    
    var s2 = QFTest()
    s2.x = 111
    s2.y = 222
    print("s2.x = \(s2.x) s2.y = \(s2.y)")
    
    var s3 = QFTest(333,444)
    print("s3.x = \(s3.x) s3.y = \(s3.y)")
    
    s3.x = 600
    
    let c = s3.getCenter()
    print("c is \(c)")
    
    s3.assOffSet(deltaX: 100, deltaY: 200)
    print("s3.x = \(s3.x) s3.y = \(s3.y)")
    
    
}

testStructure()
